encyklopedia.space

Gradient descent

Gradient descent (pol. spadek gradientowy) – metoda iteracyjna wykorzystywana w optymalizacji numerycznej do znajdowania minima (lub maksima) funkcji różniczkowalnych. Algorytm opiera się na pochodnej (dokładniej na gradientzie) i polega na kolejnych krokach w kierunku przeciwnym do wektora gradientu, czyli w stronę największego spadku wartości funkcji.

Historia

Idea minimalizacji przy użyciu pochodnych sięga XIX wieku, jednak w swojej współczesnej postaci metoda spadku gradientowego została spopularyzowana w latach 1950–1960 w kontekście uczenia maszynowego i statystyki. Jednym z pierwszych opisów jest praca R. A. Fletchera i M. J. D. Powella z 1961 roku, a później metodę rozwijano w ramach sztucznej inteligencji i sieci neuronowych.

Podstawowy algorytm

Niech J(θ) będzie funkcją kosztu zależną od wektora parametrów θ. Algorytm spadku gradientowego w najprostszej formie wygląda następująco:

1. Wybierz początkowy wektor parametrów θ₀ oraz krok uczenia α > 0.
2. Dla k = 0, 1, 2, … wykonuj:
   a) Oblicz gradient:   gₖ = ∇J(θₖ)
   b) Zaktualizuj parametr:   θₖ₊₁ = θₖ – α·gₖ
   c) Zatrzymaj, gdy ||gₖ|| < ε lub po określonej liczbie iteracji.

W praktyce α (nazywany krokiem uczenia) musi być dobrany tak, aby zapewnić zbieżność, ale nie spowolnić procesu.

Warianty

W zależności od sposobu obliczania gradientu i aktualizacji parametrów wyróżnia się kilka popularnych wariantów:

  • Batch gradient descent – gradient jest obliczany na całym zbiorze danych; gwarantuje najstabilniejsze zbieżności, ale jest kosztowny przy dużych zbiorach.
  • Stochastic gradient descent (SGD) – gradient jest przybliżany na podstawie pojedynczego przykładu; pozwala na szybką aktualizację i jest szeroko stosowany w uczeniu maszynowym.
  • Mini-batch gradient descent – kompromis między batch a SGD; gradient jest szacowany na małych podzbiorach (np. 32–256 przykładów).
  • Momentum – do aktualizacji dodaje się składnik zależny od poprzednich kierunków, co przyspiesza poruszanie się po płaszczyznach o małym nachyleniu.
  • Nesterov accelerated gradient (NAG) – modyfikacja momentum wykorzystująca „przewidywanie” położenia przed obliczeniem gradientu.
  • Adam – adaptacyjny algorytm łączący zalety momentum i skalowania kroku uczenia dla każdego parametru osobno.

Zbieżność i problemy

Metoda spadku gradientowego nie zawsze prowadzi do globalnego minimum. Występują:

  • Minimum lokalne – szczególnie w problemach nieliniowych.
  • Plateau – obszary o bardzo małym gradiencie, które mogą wydłużać czas trenowania.
  • Oscylacje – przy zbyt dużym α algorytm może przeskakiwać przez minimum.

Rozwiązaniem jest m.in. stosowanie strategii zmiany kroku uczenia (schedule), wymienionych wyżej wariantów oraz technik regularizacji.

Przykłady zastosowań

Gradient descent znajduje zastosowanie w wielu dziedzinach:

Implementacja

W językach programowania najczęściej spotyka się gotowe funkcje, np. w Pythonie – biblioteka TensorFlow lub PyTorch. Podstawowy kod w pseudo‑języku wygląda tak:

θ = inicjalizacja()
dla epoki w 1..N:
    gradient = oblicz_gradient(J, θ)
    θ = θ - α * gradient

Powiązane pojęcia

Więcej informacji można znaleźć w artykułach: gradient, pochodna, krok uczenia, zbieżność, regularizacja, uczenie maszynowe, statystyka.